﻿// ------------------------------------------------------------------------------------------------
//  <copyright file="Message.cs" company="Iveely">
//    Copyright (c) Iveely Liu.  All rights reserved.
//  </copyright>
//  
//  <Create Time>
//    03/02/2013 21:59 
//  </Create Time>
//  
//  <contact owner>
//    liufanping@iveely.com 
//  </contact owner>
//  -----------------------------------------------------------------------------------------------

#region

using System;
using System.Globalization;

#endregion

namespace IveelySE.Common.Log
{
    /// <summary>
    ///   表示一个日志记录的对象
    /// </summary>
    public class Message
    {
        /// <summary>
        ///   日志记录的时间
        /// </summary>
        private DateTime _datetime;

        /// <summary>
        ///   日志记录的内容
        /// </summary>
        private string _text;

        /// <summary>
        ///   创建新的日志记录实例;日志记录的内容为空,消息类型为MsgType.Unknown,日志时间为当前时间
        /// </summary>
        public Message()
            : this(string.Empty, MessageType.Unknown)
        {
        }

        /// <summary>
        ///   创建新的日志记录实例;日志事件为当前时间
        /// </summary>
        /// <param name="t"> 日志记录的文本内容 </param>
        /// <param name="p"> 日志记录的消息类型 </param>
        public Message(string t, MessageType p)
            : this(DateTime.Now, t, p)
        {
        }

        /// <summary>
        ///   创建新的日志记录实例;
        /// </summary>
        /// <param name="dt"> 日志记录的时间 </param>
        /// <param name="t"> 日志记录的文本内容 </param>
        /// <param name="p"> 日志记录的消息类型 </param>
        public Message(DateTime dt, string t, MessageType p)
        {
            this._datetime = dt;
            this.Type = p;
            this._text = t;
        }

        /// <summary>
        ///   获取或设置日志记录的时间
        /// </summary>
        public DateTime Datetime
        {
            get { return this._datetime; }
            set { this._datetime = value; }
        }

        /// <summary>
        ///   获取或设置日志记录的文本内容
        /// </summary>
        public string Text
        {
            get { return this._text; }
            set { this._text = value; }
        }

        /// <summary>
        ///   获取或设置日志记录的消息类型
        /// </summary>
        public MessageType Type { get; set; }

        /// <summary>
        ///   The to string.
        /// </summary>
        /// <returns> The <see cref="string" /> . </returns>
        public new string ToString()
        {
            return this._datetime.ToString(CultureInfo.InvariantCulture) + "\t" + this._text + "\n";
        }
    }
}